RowMapper স্প্রিং জেডিবিসি (Spring JDBC)-তে ব্যবহৃত একটি ইন্টারফেস, যা ডাটাবেস থেকে প্রাপ্ত রেকর্ডকে কাস্টম অবজেক্টে ম্যাপ করার জন্য ব্যবহৃত হয়। এটি ডেটাবেসের একটি রো-কে জাভা অবজেক্টে রূপান্তর করার জন্য খুবই কার্যকর।
RowMapper ব্যবহার করার উপায়
Syntax:
@FunctionalInterface
public interface RowMapper<T> {
T mapRow(ResultSet rs, int rowNum) throws SQLException;
}
RowMapper ইন্টারফেসের একটি mapRow() মেথড আছে, যা ডাটাবেস থেকে প্রতিটি রেকর্ডকে প্রসেস করে এবং জাভা অবজেক্ট তৈরি করে।
উদাহরণ সহ ব্যাখ্যা
উদাহরণ: RowMapper ব্যবহার করে একটি টেবিল থেকে ডেটা পড়া
1. ডাটাবেস টেবিল:
ধরুন, আমাদের একটি users নামক টেবিল আছে:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
email VARCHAR(255)
);
2. User ক্লাস তৈরি করুন:
public class User {
private int id;
private String name;
private String email;
// Constructor
public User(int id, String name, String email) {
this.id = id;
this.name = name;
this.email = email;
}
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", email='" + email + '\'' +
'}';
}
}
3. RowMapper ব্যবহার করে ডেটা ফেচ করা:
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
@Service
public class UserService {
private final JdbcTemplate jdbcTemplate;
public UserService(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}
public List<User> getAllUsers() {
String sql = "SELECT * FROM users";
// Using RowMapper
return jdbcTemplate.query(sql, new RowMapper<User>() {
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
return new User(
rs.getInt("id"),
rs.getString("name"),
rs.getString("email")
);
}
});
}
}
4. Lambda দিয়ে সহজ পদ্ধতিতে RowMapper:
RowMapper-এর lambda এক্সপ্রেশন ব্যবহার করা যেতে পারে:
public List<User> getAllUsers() {
String sql = "SELECT * FROM users";
return jdbcTemplate.query(sql, (rs, rowNum) -> new User(
rs.getInt("id"),
rs.getString("name"),
rs.getString("email")
));
}
একটি নির্দিষ্ট রেকর্ড পড়ার জন্য RowMapper:
ধরুন, আমরা একটি নির্দিষ্ট id এর ভিত্তিতে User পড়তে চাই:
public User getUserById(int id) {
String sql = "SELECT * FROM users WHERE id = ?";
return jdbcTemplate.queryForObject(sql, new Object[]{id}, (rs, rowNum) -> new User(
rs.getInt("id"),
rs.getString("name"),
rs.getString("email")
));
}
কাস্টম RowMapper তৈরি করা (Reusable):
আপনার যদি একই টেবিলের জন্য বারবার RowMapper ব্যবহার করতে হয়, তাহলে কাস্টম RowMapper তৈরি করুন:
CustomUserRowMapper:
import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;
public class CustomUserRowMapper implements RowMapper<User> {
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
return new User(
rs.getInt("id"),
rs.getString("name"),
rs.getString("email")
);
}
}
ব্যবহার:
public List<User> getAllUsers() {
String sql = "SELECT * FROM users";
return jdbcTemplate.query(sql, new CustomUserRowMapper());
}
সম্পূর্ণ উদাহরণ:
Main Application:
@SpringBootApplication
public class SpringJdbcExampleApplication {
public static void main(String[] args) {
ApplicationContext context = SpringApplication.run(SpringJdbcExampleApplication.class, args);
UserService userService = context.getBean(UserService.class);
// Add some users
userService.addUser("Alice", "alice@example.com");
userService.addUser("Bob", "bob@example.com");
// Get all users
List<User> users = userService.getAllUsers();
users.forEach(System.out::println);
// Get user by ID
User user = userService.getUserById(1);
System.out.println(user);
}
}
উপসংহার:
RowMapper-এর মাধ্যমে জাভা অবজেক্ট এবং ডাটাবেস টেবিলের রো-র মধ্যে ম্যাপিং সহজ হয়।- এটি কাস্টম ম্যাপিং করার সুবিধা দেয়।
- Reusable
RowMapperতৈরি করে কোড আরও ক্লিন এবং মেইনটেইনেবল করা যায়।
Read more